package ups.edu.ec.app.entidades;

import javax.persistence.Entity;
import java.io.Serializable;
import javax.persistence.Id;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Column;
import javax.persistence.Version;
import java.lang.Override;
import ups.edu.ec.app.entidades.Rol;
import java.util.Set;
import java.util.HashSet;
import javax.persistence.ManyToMany;

@Entity
public class Cliente implements Serializable
{

   @Id
   @GeneratedValue(strategy = GenerationType.AUTO)
   @Column(name = "id", updatable = false, nullable = false)
   private Long id = null;
  
   @Column
   private String nombre;

   @Column
   private String apellido;

   @Column
   private String cedula;

   @Column
   private String usuario;

   @Column
   private String contrasena;

   @ManyToMany
   private Set<Rol> roles = new HashSet<Rol>();

   public Long getId()
   {
      return this.id;
   }

   public void setId(final Long id)
   {
      this.id = id;
   }

   

   @Override
   public boolean equals(Object that)
   {
      if (this == that)
      {
         return true;
      }
      if (that == null)
      {
         return false;
      }
      if (getClass() != that.getClass())
      {
         return false;
      }
      if (id != null)
      {
         return id.equals(((Cliente) that).id);
      }
      return super.equals(that);
   }

   @Override
   public int hashCode()
   {
      if (id != null)
      {
         return id.hashCode();
      }
      return super.hashCode();
   }

   public String getNombre()
   {
      return this.nombre;
   }

   public void setNombre(final String nombre)
   {
      this.nombre = nombre;
   }

   public String getApellido()
   {
      return this.apellido;
   }

   public void setApellido(final String apellido)
   {
      this.apellido = apellido;
   }

   public String getCedula()
   {
      return this.cedula;
   }

   public void setCedula(final String cedula)
   {
      this.cedula = cedula;
   }

   public String getUsuario()
   {
      return this.usuario;
   }

   public void setUsuario(final String usuario)
   {
      this.usuario = usuario;
   }

   public String getContrasena()
   {
      return this.contrasena;
   }

   public void setContrasena(final String contrasena)
   {
      this.contrasena = contrasena;
   }

   @Override
   public String toString()
   {
      String result = getClass().getSimpleName() + " ";
      if (nombre != null && !nombre.trim().isEmpty())
         result += "nombre: " + nombre;
      if (apellido != null && !apellido.trim().isEmpty())
         result += ", apellido: " + apellido;
      if (cedula != null && !cedula.trim().isEmpty())
         result += ", cedula: " + cedula;
      if (usuario != null && !usuario.trim().isEmpty())
         result += ", usuario: " + usuario;
      if (contrasena != null && !contrasena.trim().isEmpty())
         result += ", contrasena: " + contrasena;
      return result;
   }

   public Set<Rol> getRoles()
   {
      return this.roles;
   }

   public void setRoles(final Set<Rol> roles)
   {
      this.roles = roles;
   }
}